ホームに戻る
目次 :
Excelにおける日付と時刻の表現
Excelでは、日付と時刻を「シリアル値」で表現する。
このシリアル値は「『1900年1月0日 0時0分0秒』から『何日経過したか』」を意味する。
入力と表示
例えばセル中に"2021/2/12"と入力した場合、Excelは入力された内容を「日付」と判断し、自動的にセルの表示形式を日付の表示に適したものに設定する。
このため、一見「日付(2021年2月12日)のみ」を保持しているように見えるが、実際には「2021年2月12日 0時0分0秒を表すシリアル値」を保持している。
時刻(のみ)を入力した場合も同様である。

シリアル値に対する演算
-
前述のとおりシリアル値の単位は「日」であるため、シリアル値に 1 を加算すると「1日後」を表す値となる。

-
シリアル値に 24 を乗ずると「時間単位」、1440 を乗ずると「分単位」に換算できる。
(必要に応じて表示形式を変更)

-
シリアル値同士で減算を行うことで、両者の差異(何日経過したか)を得ることができる。
VBAで日時シリアル値を得るには
主な手段
-
DateSerial()関数 : 指定した日付に相当するシリアル値を取得(引数はいずれも省略不可)
ワークシート関数の DATE() に相当
引数 | 内容 |
Year | 年を表す 100~9999 の範囲内の整数 |
Month | 月を表す整数 1 ~ 12 の範囲を外れた場合は超過分が加算される |
Day | 日を表す整数 1 ~ 31 の範囲を外れた場合は超過分が加算される |
-
TimeSerial()関数 : 指定した時刻に相当するシリアル値を取得(引数はいずれも省略不可)
ワークシート関数の TIME() に相当
引数 | 内容 |
Hour | 時を表す 0~23 の範囲内の整数 |
Minute | 分を表す整数 0 ~ 59 の範囲を外れた場合は超過分が加算される |
Second | 秒を表す整数 0 ~ 59 の範囲を外れた場合は超過分が加算される |
-
文字列形式で指定
存在しない日時を指定するとエラーとなる
コード例
' 「2021年2月12日」を表すシリアル値を取得
Dim dt1 as Date
dt1 = DateSerial(2021, 2, 12)
' 「2021年2月30日」⇒「2021年3月2日」
Dim dt2 as Date
dt2 = DateSerial(2021, 2, 30)
' 「12時29分45秒」を表すシリアル値を取得
Dim dt3 as Date
dt3 = TimeSerial(12, 29, 45)
' 「12時64分45秒」⇒「13時04分45秒」
Dim dt4 as Date
dt4 = TimeSerial(12, 64, 45)
' 日付シリアルと時刻シリアルを加算 ⇒ 「2021年2月12日 12時29分45秒」
Dim dt5 as Date
dt5 = DateSerial(2021, 2, 12) + TimeSerial(12, 29, 45)
' 文字列形式での「2021年2月12日 12時29分45秒」
Dim dt6 as Date
dt6 = "2021/2/12 12:29:45"
' 文字列形式での「2021年2月29日 12時29分45秒」 ⇒ 存在しない日時のためエラー
Dim dt7 as Date
dt7 = "2021/2/29 12:29:45"